package com.source.hotelbath.weight.listview.ptr.ptrloadmore;

import android.view.View;
import android.widget.AbsListView;

import com.source.hotelbath.weight.listview.ptr.PtrHeaderBase;


/**
 * 下拉刷新，滑到底部加载更多
 * Created by kinglong on 15-6-3.
 */
public interface PtrLoadMoreBaseInterface<T extends AbsListView> {


    /**
     * 设置界面为空的view
     * @param view
     */
    public void setEmptyView(View view);


    /**
     * 设置界面为空的view的layout
     * @param id
     */
    public void setEmptyView(int id);

    /**
     * 获的界面为空的view
     * @return
     */
    public View getEmptyView();

    /**
     * 设置刷新的view，view继承AbsListView
     * @param view
     */
    public void setRefreshView(T view);


    /**
     * 获得刷新的view，view继承AbsListView
     * @return
     */
    public T getRefreshView();


    /**
     * 设置header，header继承PtrHeaderBase
     * @param header
     * @param <K>
     */
    public <K extends PtrHeaderBase>void setHeader(K header);


    /**
     * 自动刷新
     */
    public void autoRefresh();


    /**
     * 加载成功
     */
    public void loadSuccess();

    /**
     * 加载失败
     */
    public void loadFailure();

    /**
     * 加载失败是否显示空view，value=true显示空view
     * @param value
     */
    public void loadFailure(boolean value);


    /**
     * 显示空view
     */
    public void showEmptyView();

    /**
     * 显示内容view，即显示refreshview
     */
    public void showContentView();


    /**
     * 设置onscrolllistener，
     * 如果直接用refreshview的setOnScrollListener可能会导致滑到最底端不能加载更多
     * @param onScrollListener
     */
    public void setOnScrollListener(final AbsListView.OnScrollListener onScrollListener);


    /**
     * 获得页码
     * @return
     */
    public int getPageIndex();

    /**
     * 设置每页最多显示的条数
     * @param pageSize
     */
    public void setPageSize(int pageSize);

    /**
     * 获得每页最多显示的条数
     * @return
     */
    public int getPageSize();


    /**
     * 是否有下一页
     * @return
     */
    public boolean hasNext();


    /**
     * 设置是否有下一页
     * @param value
     */
    public void setHasNext(boolean value);


    /**
     * footerview和headerview 频繁remove add，2.3一些手机会崩掉，使用隐藏显示方式
     * 这里限定了footerview中必须有个linearlayout，id=ll_content 作为容器便于footer的隐藏，无奈之举
     * 以后有更好的替代方案再改
     */
    public void setFooterView();


    /**
     * 下拉刷新如果和有水平滑动的view配合使用需要设置为true
     * 下拉控件中默认是false
     */
    public void disableWhenHorizontalMove(boolean value);
}
